package baidu

import (
	"encoding/json"
	"io/ioutil"
	"request"
)

/**
 * json结构体
 */
type AccessToken struct {
	Token struct {
		Url     string
		Headers []struct {
			Key   string
			Value string
		}
		Data struct {
			GrantType    string
			ClientId     string
			ClientSecret string
		}
	}
}

var accessToken string

/**
 * 获取accessToken
 */
func GetAccessToken() string {

	if accessToken == "" {
		url, headers, data := packageTokenData()
		res := request.Post(url, headers, data, "general")
		accessToken = res["access_token"].(string)
	}

	return accessToken
}

/**
 * 解析token数据
 */
func packageTokenData() (string, map[string]string, map[string]interface{}) {

	// 头部数据|数据体
	data := make(map[string]interface{})
	headers := make(map[string]string)

	// 解析json文件
	accessToken, _ := ioutil.ReadFile("config/baiduai.json")
	access := &AccessToken{}
	json.Unmarshal([]byte(accessToken), &access)

	// 拼装数据
	for _, header := range access.Token.Headers {
		headers[header.Key] = header.Value
	}
	data["grant_type"] = access.Token.Data.GrantType
	data["client_id"] = access.Token.Data.ClientId
	data["client_secret"] = access.Token.Data.ClientSecret

	// 返回数据
	return access.Token.Url, headers, data
}
